//
//  CZStatusListViewModel.swift
//  Weibo30
//
//  Created by apple on 16/8/12.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit
//  获取微博数据的ViewModel , 对应的视图是首页的TableView
class CZStatusListViewModel: NSObject {
    
    //  微博数据源
    lazy var statusList: [CZStatusViewModel] = [CZStatusViewModel]()
    
    //  加载微博数据
    func loadData(isPullup: Bool, callBack: (isSuccess: Bool, message: String)->()) {
        
        //  上拉加载所需要的参数
        var maxId: Int64 = 0
        //  下拉刷新所需要的参数
        var sinceId: Int64 = 0
        
        if isPullup {
            //  上拉加载获取数据源里面最后一条微博数据的id
            maxId = statusList.last?.status?.id ?? 0
            if maxId > 0 {
                //  避免重复数据
                maxId -= 1
            }
        } else {
            //  下拉刷新获取数据源里面的第一天微博的id
            sinceId = statusList.first?.status?.id ?? 0
        }
        //  默认显示的tip文字
        var result = "没有加载到最新的微博数据"
        
        CZStatusDAL.loadData(maxId, sinceId: sinceId) { (dicArray) -> () in
            
            //  以下代码抽取到了 StatusDAL
            
//        }
//        
//        CZStatusDAL.checkCacheData(maxId, sinceId: sinceId)
//        
//        CZNetworkTools.sharedTools.requestStatuses(CZUserAccountViewModel.sharedUserAccount.accessToken!, maxId: maxId, sinceId: sinceId) { (response, error) -> () in
//            if error != nil {
//                print("网络请求异常,\(error)")
//                callBack(isSuccess: false, message: result)
//                return
//            }
//            //  代码执行到此,表示网络请求成功
//            guard let dic = response as? [String: AnyObject] else {
//                print("字典格式不正确")
//                callBack(isSuccess: false, message: result)
//                return
//            }
//            //  字典格式正确
//            guard let dicArray = dic["statuses"] as? [[String: AnyObject]] else {
//                print("字典格式不正确")
//                callBack(isSuccess: false, message: result)
//                return
//            }
//            
//            
//            //  缓存微博数据
//            CZStatusDAL.cacheData(dicArray)
            
            var tempArray = [CZStatusViewModel]()
            for value in dicArray {
                
                //  字典转模型
                let status = CZStatus(dic: value)
                
                //  viewModel
                let statusViewModel = CZStatusViewModel(status: status)
                
                tempArray.append(statusViewModel)
                
            }
            //  设置数据源
//            self.statusList = tempArray
            
            if isPullup {
                //  上拉加载追加服务端返回的数据
                self.statusList.appendContentsOf(tempArray)
            } else {
                //  下拉刷新服务端返回的数据插入到第一个元素
                self.statusList.insertContentsOf(tempArray, at: 0)
            }
            
            
            
            //  刷新数据
//            self.tableView.reloadData()
            
            //  延时两秒回调
//            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (Int64)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(),{ () -> Void in
//                callBack(isSuccess: true)
//            })
            
            if tempArray.count > 0 {
                result = "加载了\(tempArray.count)条数据"
            }
            
            
            callBack(isSuccess: true, message: result)
            
            
            
        }
        
    }
}
